package br.ufal.ic.dao;

import java.io.Serializable;
import java.util.List;

/**
 * DAO abstrato que contem metodos comuns a todos DAO's.
 *
 * @author Marcos Paulo
 */
public interface AbstractDAO<E, ID extends Serializable> {

    /**
     * Salva um objeto em um base dados.
     * 
     * @param objeto a ser persistida.
     */
    public void save(E e);

    /**
     * Deleta um objeto que esta salvo na base dados.
     * 
     * @param objeto a ser deletado.
     */
    public void delete(E e);

    /**
     * Atualiza as informações de um objeto ja salvo.
     * 
     * @param objeto a ter seus dados atualizados.
     */
    public void update(E e);

    /**
     *
     * @return todos os objetos salva na base de dados.
     */
    public List<E> findAll();

    /**
     *
     * @param indetificador unico de um objeto.
     * @return objeto especificado.
     */
    public E findById(ID id);
}
